package com.management.department.teacherinfosystem.Service;

import com.management.department.teacherinfosystem.DTO.AcademicAchievementSubmitDTO;
import com.management.department.teacherinfosystem.DTO.AcademicAchievementDTO;
import com.management.department.teacherinfosystem.Entity.AcademicAchievement;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface AcademicAchievementService {
    
    // 创建学术成果
    AcademicAchievement createAchievement(AcademicAchievementSubmitDTO dto, MultipartFile[] files) throws Exception;
    
    // 更新学术成果
    AcademicAchievement updateAchievement(Long id, AcademicAchievementSubmitDTO dto, MultipartFile[] files) throws Exception;
    
    // 删除学术成果
    void deleteAchievement(Long id) throws Exception;
    
    // 获取学术成果详情
    AcademicAchievement getAchievementById(Long id);
    
    // 获取学术成果详情（DTO）
    AcademicAchievementDTO getAchievementDTOById(Long id);
    
    // 获取用户的所有学术成果
    List<AcademicAchievement> getMyAchievements(Long userId);
    
    // 获取用户的所有学术成果（DTO）
    List<AcademicAchievementDTO> getMyAchievementsDTO(Long userId);
    
    // 获取所有学术成果（管理员）
    List<AcademicAchievement> getAllAchievements();
    
    // 获取所有学术成果（管理员，DTO）
    List<AcademicAchievementDTO> getAllAchievementsDTO();
    
    // 获取待审核的学术成果
    List<AcademicAchievement> getPendingAchievements();
    
    // 获取待审核的学术成果（DTO）
    List<AcademicAchievementDTO> getPendingAchievementsDTO();
    
    // 获取教师列表（用于筛选）
    List<Map<String, Object>> getTeachersList();
    
    // 根据作者姓名搜索成果ID列表
    List<Long> getAchievementIdsByAuthorName(String authorName);
    
    // 审核学术成果
    void reviewAchievement(Long id, String status, String opinion, Long reviewerId);
    
    // 上传附件
    void uploadAttachment(Long achievementId, MultipartFile file, String fileType) throws Exception;
    
    // 删除附件
    void deleteAttachment(Long attachmentId);
}
